home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr48 / pasclern.zip / AMORT2.PAS < prev    next >
Pascal/Delphi Source File  |  1993-04-01  |  2KB  |  59 lines

  1. PROGRAM amortization_table;
  2.  
  3. VAR month : 1..12;
  4.     starting_month : 1..12;
  5.     balance : REAL;
  6.     payment : REAL;
  7.     interest_rate : REAL;
  8.  
  9. PROCEDURE initialize_data; (* ********************* initialize data *)
  10. BEGIN
  11.   balance := 2500.0;
  12.   starting_month := 5;
  13.   payment := 100.0;
  14.   interest_rate := 0.13/12.0;
  15. END;
  16.  
  17. PROCEDURE print_annual_header; (* ************** print annual header *)
  18. BEGIN
  19.   WRITELN('Annual header');
  20. END;
  21.  
  22. PROCEDURE calculate_and_print; (* ************** calculate and print *)
  23. VAR interest_payment : REAL;
  24.     principal_payment : REAL;
  25. BEGIN
  26.   IF balance > 0.0 THEN
  27.   BEGIN
  28.     interest_payment := interest_rate * balance;
  29.     principal_payment := payment - interest_payment;
  30.     IF principal_payment > balance THEN
  31.     BEGIN  (* loan payed off this month *)
  32.       principal_payment := balance;
  33.       balance := 0.0;
  34.     END
  35.     ELSE
  36.     BEGIN  (* regular monthly payment *)
  37.       balance := balance - principal_payment;
  38.     END;
  39.     WRITELN(month:5,payment:10:2,interest_payment:10:2,
  40.             principal_payment:10:2,balance:10:2);
  41.   END; (* of IF balance > 0.0 THEN *)
  42. END;
  43.  
  44. PROCEDURE print_annual_summary; (* ************ print annual summary *)
  45. BEGIN
  46. END;
  47.  
  48. BEGIN   (* ********************************************* main program *)
  49.   initialize_data;
  50.   REPEAT
  51.     print_annual_header;
  52.     FOR month := starting_month TO 12 DO
  53.     BEGIN
  54.       calculate_and_print;
  55.     END;
  56.     print_annual_summary;
  57.     starting_month := 1;
  58.   UNTIL balance <= 0.0;
  59. END. (* of main program *)